<?php

include_once 'MySQLExeption.php';

class DBAccess{
   
     private
      $Serveur     = '',
      $Bdd         = '',
      $Identifiant = '',
      $Mdp         = '',
      $Lien        = '';
     
    /**
    * Constructeur de la classe
    * Connexion  aux serveur de base de donnée et sélection de la base
    *
    * $Serveur     = L'hôte (ordinateur sur lequel Mysql est installé)
    * $Bdd         = Le nom de la base de données
    * $Identifiant = Le nom d'utilisateur
    * $Mdp         = Le mot de passe
    */
    public function __construct($Serveur, $Bdd , $Identifiant , $Mdp )
    {
      $this->Serveur     = $Serveur;
      $this->Bdd         = $Bdd;
      $this->Identifiant = $Identifiant;
      $this->Mdp         = $Mdp;
      $this->Lien=mysql_connect($this->Serveur, $this->Identifiant, $this->Mdp);
 
      if(!$this->Lien)
        throw new MySQLExeption('Erreur de connexion au serveur MySql!!!   '.  mysql_error());        
 
      $Base = mysql_select_db($this->Bdd,$this->Lien);
 
      if (!$Base)
        throw new MySQLExeption('Erreur de connexion à la base de donnees!!!  '.  mysql_error());
    }
   
   
//Fonction qui retourne la valeurU d'un mûr selon l'année avec une continuité TERRAIN
      /**
     * @assert (1970) == 1.3
     * @assert (1999) == 0.32
     */
function getValeurU_T($year) {

    //Test et modification de l'année selon la plage de valeurs
    if ($year < 1960)
        $year = 1960;
    else
        if ($year == 2012)
            $year = 2012;
        else
            if($year > 2000)
                $year = 2000;

    // on crée la requête SQL
    $sql = 'SELECT ValueU FROM norm_land WHERE Years = ' . $year;

    // on envoie la requête
    $req = mysql_query($sql);

    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    //mysql_close();
    mysql_free_result($req);
   
   return $data['ValueU'];
}

//Fonction qui retourne la valeurU d'un mûr selon l'année avec une continuité AIR EXTERIEUR et LOCAL CHAUFFE
function getValeurU_AE_LC($year) {

    //Test et modification de l'année selon la plage de valeurs
    if ($year < 1960)
        $year = 1960;
    else
        if ($year == 2012)
            $year = 2012;
        else
            if($year > 2000)
                $year = 2000;

    // on crée la requête SQL
    $sql = 'SELECT ValueU FROM norm_outsideairandheatedlocal WHERE Years = ' . $year;

    // on envoie la requête
    $req = mysql_query($sql) ;
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());
   
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    //mysql_close();
    mysql_free_result($req);
   
   return $data['ValueU'];
}

//Fonction qui retourne la valeurU d'un mûr selon l'année avec une continuité LOCAL NON CHAUFFE
function getValeurU_NC($year) {

    //Test et modification de l'année selon la plage de valeurs
    if ($year < 1960)
        $year = 1960;
    else
        if ($year == 2012)
            $year = 2012;
        else
            if($year > 2000)
                $year = 2000;

    // on crée la requête SQL
    $sql = 'SELECT ValueU FROM norm_unheatedlocal WHERE Years = ' . $year;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    //mysql_close();
    mysql_free_result($req);
   
   return $data['ValueU'];
}

//Fonction qui retourne la valeur thermique d'un matériel
function getRthermMat($material) {
   
    // on crée la requête SQL
    $sql = 'SELECT Value FROM norm_wallmaterial WHERE Name = ' . $material;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    //mysql_close();
    mysql_free_result($req);
   
   return $data['Value'];
}

//Fonction qui retourne la température extérieure selon la ville de résidence
function getExTemp($IDcity) {
   
    // on crée la requête SQL
    $sql = 'SELECT Temperature FROM norm_weather WHERE IdNorm_Weather = ' . $IDcity;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    //mysql_close();
    mysql_free_result($req);
   
   return $data['Temperature'];
}


//Fonction qui retourne la température extérieure selon la ville de résidence
function getTempExtrapolation($year) {
    
    //Test et modification de l'année selon la plage de valeurs
    if ($year < 1960)
        $year = 1960;
    else
        if ($year > 2000)
            $year = 2000;
   
    // on crée la requête SQL
    $sql = 'SELECT Temperature FROM norm_tempextrapolation WHERE Year = ' . $year;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    //mysql_close();
    mysql_free_result($req);
   
   return $data['Temperature'];
}

//Fonction qui retourne la valeur U d'un plancher vers un local non chauffé
function getValueU_FloorNC($year) {
    
   //Test et modification de l'année selon la plage de valeurs
    if ($year < 1960)
        $year = 1960;
    else
        if ($year == 2012)
            $year = 2012;
        else
            if($year > 2000)
                $year = 2000;
   
    // on crée la requête SQL
    $sql = 'SELECT ValueU FROM norm_floor_NC WHERE Year = ' . $year;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    //mysql_close();
    mysql_free_result($req);
   
   return $data['ValueU'];
}

//Fonction qui retourne la valeur U d'un plancher vers un local non chauffé
function getValueU_FloorT($year) {
    
   //Test et modification de l'année selon la plage de valeurs
    if ($year < 1960)
        $year = 1960;
    else
        if ($year == 2012)
            $year = 2012;
        else
            if($year > 2000)
                $year = 2000;
   
    // on crée la requête SQL
    $sql = 'SELECT ValueU FROM norm_floor_T WHERE Year = ' . $year;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    //mysql_close();
    mysql_free_result($req);
   
   return $data['ValueU'];
}


//Fonction qui retourne la valeur U d'un plancher vers un local non chauffé
function getFactReducFloorT($valueU) {
    //ID du facteur de réduction à récupérer
    $id;
   
    //Test du facteur de réduction à utiliser selon la valeur U
    if($valueU < 0.4){
        $id = 1;
    }
    else
        if($valueU <= 0.6){
            $id = 2;
        }
        else{
            $id = 3;
        }
        
    // on crée la requête SQL
    $sql = 'SELECT Bsf FROM norm_factreduc_floor_t WHERE IDfactReducFloorT = ' . $id;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    //mysql_close();
    mysql_free_result($req);
   
   return $data['Bsf'];
}

//Fonction qui retourne la valeur U d'un plancher vers un local non chauffé
function getFactReducFloorNC($valueU) {
    //ID du facteur de réduction à récupérer
    $id;
   
    //Test du facteur de réduction à utiliser selon la valeur U
    if($valueU < 0.4){
        $id = 1;
    }
    else{
         $id = 2;
        }
        
    // on crée la requête SQL
    $sql = 'SELECT Coef FROM norm_factreduc_floor_nc WHERE IDfactReducFloorNC = ' . $id;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    //mysql_close();
    mysql_free_result($req);
   
   return $data['Coef'];
}


//Fonction qui retourne la température extérieure selon la ville de résidence
function getWeatherStation() {
   
    // on crée la requête SQL
    $sql = 'SELECT * FROM norm_weather';

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = array();
 
    while($row = mysql_fetch_array($req)){
        array_push($data, $row);
    }
       
    return $data;


}

function getValueURoofDB($year){
    
   //Test et modification de l'année selon la plage de valeurs
    if ($year < 1960)
        $year = 1960;
    else
        if ($year == 2012)
            $year = 2012;
        else
            if($year > 2000)
                $year = 2000;
        
    // on crée la requête SQL
    $sql = 'SELECT ValueU FROM norm_roof WHERE Year = ' . $year;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    //mysql_close();
    mysql_free_result($req);
   
   return $data['ValueU'];
}

function getValueU_Ceiling($year){
    //Test et modification de l'année selon la plage de valeurs
    if ($year < 1960)
        $year = 1960;
    else
        if ($year == 2012)
            $year = 2012;
        else
            if($year > 2000)
                $year = 2000;
    
    // on crée la requête SQL
    $sql = 'SELECT ValueU FROM norm_ceiling WHERE Year = ' . $year;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    //mysql_close();
    mysql_free_result($req);
   
   return $data['ValueU'];
}


//Récupération de la valeur U du cadre des fenêtres
function getValueU_Frame($id){
   
     // on crée la requête SQL
    $sql = 'SELECT valueU FROM norm_framematerial WHERE IDframematerial = ' . $id;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    //mysql_close();
    mysql_free_result($req);
   
   return $data['valueU'];
}
//Récupération de la valeur U des vitres selon le type 
function getValueU_Glass($id){
   
     // on crée la requête SQL
    $sql = 'SELECT valueU FROM norm_glasstype WHERE IDglasstype = ' . $id;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    //mysql_close();
    mysql_free_result($req);
   
   return $data['valueU'];
}
//Récupération de la valeur U des stores selon l'année
function getValueU_Sunblind($year){
   
    $id;
   
    if($year < 1970){
        $id = 1;
    }
    else{
        $id = 2;
    }
   
     // on crée la requête SQL
    $sql = 'SELECT valueU FROM norm_sunblind WHERE IDsunblind = ' . $id;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    //mysql_close();
    mysql_free_result($req);
   
   return $data['valueU'];
}

//Requête pour récupérer le prix du kw/h (valeur par défaut)
function getKwhPrice(){
   
     // on crée la requête SQL
    $sql = 'SELECT kWhPrice FROM norm_heating_prices WHERE idnorm_heating_price = ' . 1;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    mysql_free_result($req);
   
   return $data['kWhPrice'];
}

//Requête pour récupérer le prix du kw/h (valeur par défaut)
function getLiterPrice(){
   
     // on crée la requête SQL
    $sql = 'SELECT fuelOilLitrePrice FROM norm_heating_prices WHERE idnorm_heating_price = ' . 1;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    mysql_free_result($req);
   
   return $data['fuelOilLitrePrice'];
}

//Requête pour récupérer le prix du kw/h (valeur par défaut)
function getCop($id){
   
     // on crée la requête SQL
    $sql = 'SELECT Rendement FROM norm_heating_rendement WHERE idnorm_heating_rendement = ' . $id;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    mysql_free_result($req);
   
   return $data['Rendement'];
}

//Requête pour récupérer le coéficient conso pour les buches ou les pellets
function getCoefConsoWoodPellet($id){
   
     // on crée la requête SQL
    $sql = 'SELECT CoefConsoKwh FROM norm_heating_wood_pellet WHERE IDheating_wood_pellet = ' . $id;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    mysql_free_result($req);
   
   return $data['CoefConsoKwh'];
}

//Requête pour récupérer le coéficient poids pour les buches ou les pellets
function getCoefWeightWoodPellet($id){
   
     // on crée la requête SQL
    $sql = 'SELECT CoefWeight FROM norm_heating_wood_pellet WHERE IDheating_wood_pellet = ' . $id;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    mysql_free_result($req);
   
   return $data['CoefWeight'];
}

//Requête pour récupérer le coéficient de consommation pour Poêle à bois et pierre ollaire
function getCoefConsoSoapstone(){
   
     // on crée la requête SQL
    $sql = 'SELECT CoefConsoKwh FROM norm_heating_soapstone WHERE IDheating_soapstone = 1';

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    mysql_free_result($req);
   
   return $data['CoefConsoKwh'];
}

//Requête pour récupérer le coéficient de poids pour Poêle à bois et pierre ollaire
function getCoefWeightSoapstone(){
   
     // on crée la requête SQL
    $sql = 'SELECT CoefWeight FROM norm_heating_soapstone WHERE IDheating_soapstone = 1';

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    mysql_free_result($req);
   
   return $data['CoefWeight'];
}

//Requête pour récupérer le débit d'air neuf rapporté à SRE
function getVentilationValue($year){
    
    //Test et modification de l'année selon la plage de valeurs
    if ($year < 1960)
        $year = 1960;
    else
        if ($year > 2000)
            $year = 2000;
   
     // on crée la requête SQL
    $sql = 'SELECT Value FROM norm_ventilation WHERE Year = '.$year;

    // on envoie la requête
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());

    // on fait une boucle qui va faire un tour pour chaque enregistrement
    $data = mysql_fetch_array($req);

    // on ferme la connexion à mysql
    mysql_free_result($req);
   
   return $data['Value'];
}









//Fonction qui enregistre les données du questionnaire généralité d'un utilisateur
function saveQuestionnaireGeneralityData($constructionYear, $insideTemperature,
                                         $idCity, $idBuildingCategory, $idSituation,
                                         $idHouseShape, $idHeatingRegulation, $numberFloor, $hasBalcony, $hasEave) {

    // on crée la requête SQL
    $sql = 'INSERT INTO HOUSE( ConstructionYear, ComfortTemperature, City_idCity,
                BuildingCategory_idBuildingCategory, Situation_idSituation, HouseShape_idHouseShape,
                HeatingRegulation_idHeatingRegulation, NumberFloor, Balcony, Eave )
             VALUES( ' . $constructionYear . ', ' . $insideTemperature . ', ' . $idCity
            . ', ' . $idBuildingCategory . ', ' . $idSituation . ', ' . $idHouseShape . ', '
            . $idHeatingRegulation . ', ' . $numberFloor . ', ' . $hasBalcony . ', ' . $hasEave . ' )';
   
    // on envoie la requêtes
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());
   
    //on exécute la requête (return true ou false selon le fonctionnement de la requête)
    //$result = mysql_query($sql);
     
    // on ferme la connexion à mysql
    //mysql_close();
    //mysql_free_result($req);
   return mysql_insert_id();
}

//Fonction qui enregistre les données du questionnaire mur d'un utilisateur
function saveQuestionnaireWallData($idHouse, $orientation, $idContinuity, $wallHeigth, $wallLength) {
   
    // on crée la requête SQL
    $sql = 'INSERT INTO WALL(House_idHouse, Orientation, Continuity_idContinuity,
                WallHeigth, WallLength)
            VALUES( ' . $idHouse . ', "' . $orientation . '", ' . $idContinuity . ', '
            . $wallHeigth . ', ' . $wallLength . ' )';
   
    // on envoie la requêtes
    $req = mysql_query($sql);
   
    //Gestion de l'erreur
    if (!$req) throw new MySQLExeption('Erreur de requête SQL!!!  ' .  mysql_error());
   
    //on exécute la requête
    //$result = mysql_query($sql);
     
    // on ferme la connexion à mysql
    //mysql_close();
    //mysql_free_result($req);
   
   return true;
}

    function setLatLngWeatherStation($id, $lat, $lng) {
        
        $result = mysql_query("UPDATE norm_weather SET Latitude='$lat', Longitude='$lng' WHERE IdNorm_Weather=$id");
        if (!$result) {
            die('Requête invalide : ' . mysql_error());
        }
        mysql_free_result($result);
    }


}
?>